package com.mazaiting.redeye.utils.third;

import com.fasterxml.jackson.core.type.TypeReference;
import com.mazaiting.redeye.domain.VerifyCodeBean;
import com.mazaiting.redeye.utils.net.HttpUtil;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

/***
 *
 *
 *                                                    __----~~~~~~~~~~~------___
 *                                   .  .   ~~//====......          __--~ ~~
 *                   -.            \_|//     |||\\  ~~~~~~::::... /~
 *                ___-==_       _-~o~  \/    |||  \\            _/~~-
 *        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
 *    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
 *  .~       .~       |   \\ -_    /  /-   /   ||      \   /
 * /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
 * |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
 *          '         ~-|      /|    |-~\~~       __--~~
 *                      |-~~-_/ |    |   ~\_   _-~            /\
 *                           /  \     \__   \/~                \__
 *                       _--~ _/ | .-~~____--~-/                  ~~==.
 *                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
 *                                 -_     ~\      ~~---l__i__i__i--~~_/
 *                                 _-~-__   ~)  \--______________--~~
 *                               //.-~~~-~_--~- |-------~~~~~~~~
 *                                      //.-~~~--\
 *                               神兽保佑
 *                              代码无BUG!
 * @author mazaiting
 * @date 2019-06-25
 * @decription 腾讯云短信服务
 */
public class SmsUtil {
    /**
     * 应用密钥
     */
    private static final String APP_KEY = "2b8064061890e";
    /**
     * api url地址
     */
    private static final String URL = "https://webapi.sms.mob.com/sms/verify";
    /**
     * 手机号地区代码
     */
    private static final String ZONE = "86";
    /**
     * 发送验证码
     * curl -d 'appkey=2b8064061890e&phone=17690823157&zone=86&code=5624'  'https://webapi.sms.mob.com/sms/verify'
     * 成功返回: {"status":200}
     * @param phoneNumber 手机号
     * @param verifyCode 验证码
     * @return 短信发送是否内容
     */
    public static VerifyCodeBean.ResultBean verify(String phoneNumber, String verifyCode) {
        // 封装参数，千万不要替换为Map与HashMap，否则参数无法传递
        MultiValueMap<String, String> params= new LinkedMultiValueMap<>();
        params.add("appkey", APP_KEY);
        params.add("phone", phoneNumber);
        params.add("zone", ZONE);
        params.add("code", verifyCode);

        return HttpUtil.post(URL, params, new TypeReference<VerifyCodeBean.ResultBean>() {});
    }

    /**
     * 生成6位随机数
     * @return 六位随机数
     */
    public static int randomCode() {
        return (int) ((Math.random() * 9 + 1) * 100000);
    }
}
